package com.yangxk.kadmin.web.module.system.service;

import com.yangxk.kadmin.common.base.BaseService;
import com.yangxk.kadmin.common.beans.Page;
import com.yangxk.kadmin.web.module.system.form.*;
import com.yangxk.kadmin.web.module.system.po.Auth;
import com.yangxk.kadmin.web.module.system.po.User;
import com.yangxk.kadmin.web.module.system.vo.AuthTree;
import com.yangxk.kadmin.web.module.system.vo.UserRoleVo;
import com.yangxk.kadmin.web.module.system.vo.UserVo;

import java.io.InputStream;
import java.util.List;

public interface UserService extends BaseService<User, Long> {

    User checkLogin(LoginForm loginForm);

    Page<UserVo> findByPage(UserQueryForm queryForm);

    UserVo findById(long userId);

    Long addUser(UserInsertForm insertForm);

    void updateUser(UserUpdateForm updateForm);

    void deleteUser(Long id);

    void deleteUser(String ids);

    /**
     * 查询用户的角色信息
     * create by yangxk on 2019/3/4 13:22
     */
    UserRoleVo findUserRole(long userId);

    /**
     * 设置用户角色
     * create by yangxk on 2019/3/4 13:31
     */
    void setUserRole(long userId, Long[] roleIds);

    /**
     * 获取当前登录用户的权限信息
     * create by yangxk on 2018/9/21 16:45
     */
    List<AuthTree> findAuthTreeOfUser(Long id);

    /**
     * 获取当前登录用户的权限集合
     * create by yangxk on 2018/10/19 15:53
     */
    List<Auth> findUserAuth(long id);

    /**
     * 查询用户的数据权限
     * create by yangxk on 2019/2/2 11:33
     */
    List<Long> findUserDataScope(long userId);

    /**
     * 更新当前登录用户信息
     * create by yangxk 2018/10/29 20:59
     */
    void updateSessionUser(UserUpdateForm updateForm);

    /**
     * 修改当前登录用户密码
     * create by yangxk 2018/10/29 21:37
     */
    void updateSessionUserPassword(UserPwdForm pwdForm);

    /**
     * 上传头像
     * create by yangxk 2019/2/26 19:47
     */
    String uploadAvatar(long userId, String filename, InputStream in);
}
